package com.loong.factory;


import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * @author loongnoy
 * @version 1.0
 * @created 18-3月-2025 15:52:13
 */
public class EventLogger extends Logger {

	public EventLogger(){
		super();
        this.setFileName("event.log");
	}


	/**
     * 记录日志消息到文件中，包括日志级别、时间、所在地方和信息
     *
     * @param message 要记录的日志消息
     */
    @Override
    public void log(String message) {

        File file = new File(getFilePath(), getFileName());
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(file, true))) {
            // 获取当前时间
            String timestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
            // 获取调用栈信息
            StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
            StackTraceElement caller = stackTrace[2]; // 调用log方法的地方
            String callerInfo = caller.getClassName() + "." + caller.getMethodName() + ":" + caller.getLineNumber();
            // 构建日志消息
            String logMessage = String.format("%s [%s] %s - %s", timestamp, getLevel(), callerInfo, message);
            // 写入日志消息
            writer.write(logMessage);
            writer.newLine();
        } catch (IOException e) {
            // 如果写入文件时发生错误，抛出运行时异常
            throw new RuntimeException("写入日志文件时发生错误", e);
        }
    }

}